1. Field
Advancements in data processing systems are needed to provide improvements in one or more of performance, power utilization, cost, scalability, efficiency, and utility of use.
2. Related Art
Unless expressly identified as being publicly or well known, mention herein of techniques and concepts, including for context, definitions, or comparison purposes, should not be construed as an admission that such techniques and concepts are previously publicly known or otherwise part of the prior art.
Clustered computer systems include a plurality of interconnected processing nodes. Data processing systems manipulate data for purposes such as data analysis and data queries. Some data processing systems store data on storage devices, such as disk drives. Some data processing systems store data in computer memory, such as Dynamic Random Access Memory (DRAM). Some data processing systems operate in a distributed manner where tasks are divided among a plurality of processors. Some data processing systems are clustered computer systems.
An example of a solid-state memory device is a device that stores information and whose active portions are based entirely on electronic and/or optical components, such as a device with active portions made from semiconductors. Solid-state memory devices include volatile memory devices, such as DRAMs, and non-volatile memory devices, such as flash memory devices. Non-volatile, solid-state memory devices retain contents after power is removed. Volatile, solid-state memory devices, in contrast, lose contents after power is removed. Back-up power sources (such as a battery back-up power source) are sometimes used to enable a volatile, solid-state memory device to retain contents for at least some time period after power is removed. Generally, non-volatile, solid-state memory devices have a higher capacity and/or use less power than volatile, solid-state memory devices, and volatile, solid-state memory devices have higher performance than non-volatile, solid-state memory devices.
Solid-state memory systems (memory systems using solid-state memory devices for storage) are contrasted with electro-mechanical memories such as hard disk drives or optical disk drives, which have mechanical action and/or moving parts. Some non-volatile, solid-state memory systems have been manufactured in a disk form factor and with standard disk drive interfaces, so called solid-state disks, to provide some of the advantages of non-volatile, solid-state memory devices, though generally at a higher price and/or with a lower capacity than hard disk drives.
In some system, a capacity of high-performance, solid-state memory, such as DRAM, is limited by factors such as cost and power. In some systems, a use of high-capacity, solid-state memory, such as flash memory, is limited by performance. Flash memory, for example, is slower in read access than DRAM, and even slower in write access, and thus has seen limited use as a main memory, generally in low-power and/or low-performance devices. Further, some non-volatile, solid-state memory devices, such as NAND flash memory devices, are paged-based. For example, a minimum writable unit of a NAND flash memory device is a page, such as a 2 kilobyte (KB) or 4 KB page. The page-based nature of some non-volatile, solid-state memory devices has made use of such devices in solid-state disks or as similar hard disk drive replacements seem natural, as hard disks are block-based devices (and have a minimum writable unit of a block, such as a 512 byte or a 4 KB block).
A page-based, solid-state memory device, such as a NAND flash memory device, comprises a plurality of pages, a size of the pages varying according to factors such as technology and/or manufacturer of the solid-state memory device. For example, the size of the pages in some NAND flash memory devices is 512 B, and the size of the pages in other NAND flash memory devices is 4 KB. A page of the page-based, solid-state memory device is the smallest writable (programmable) unit. That is, portions of a page are not writable independent of writing the entire page.
In some page-based, solid-state memory devices, pages are organized into blocks, each of the blocks comprising a number of the pages. As with the size of the pages, the number of the pages per block varies according to factors such as technology and/or manufacturer of the solid-state memory device. For example, the number of the pages per block in some NAND flash memory devices is 32, and the number of the pages per block in other NAND flash memory devices is 64. In some page-based, solid-state memory devices, a block is the smallest erasable unit, and blocks must be erased before the pages in the blocks are writable (programmable). Thus, writing data to a page-based, solid-state memory device may require erasing an entire block, even if an amount of the data is small.
Some page-based, solid-state memory devices support reading a portion of a page. For example, some NAND flash memory devices enable reading a portion of a page starting at an arbitrary index within the page. The page-based nature of writing to page-based, solid-state memory devices, combined with a need to have error detection and/or correction for each page, has caused many systems to treat both read and write of the page-based, solid-state memory devices similarly, and to only support page-based accesses.
The reference:                “Speculative Versioning Cache”, Vijaykumar, et al, IEEE Transactions on Parallel and Distributed Systems, Volume 12, Issue 12, December, 2001, pg. 1305-1317discusses versioning of data with regard to caches, but does not discuss other types of versioning, such as with regard to transactions in a clustered computer system and/or in a memory system.        
The reference:                “Architectural Semantics for Practical Transactional Memory”, McDonald, et al, ACM SIGARCH Computer Architecture News, Vol. 34, Issue 2, May, 2006, pg. 53-65discusses transactional memory semantics as embodied in an Instruction Set Architecture (ISA), but does not discuss transactional semantics as embodied in a clustered computer system and/or in a memory system.        
All of the aforementioned references are herein incorporated by reference for all purposes.